// Collect views
allViews = {
'default': {
- label: mw.msg( 'rcfilters-filterlist-title' ),
+ title: mw.msg( 'rcfilters-filterlist-title' ),
groups: filterGroups
}
};
viewData.groups.forEach( function ( groupData ) {
var group = groupData.name;
- model.groups[ group ] = new mw.rcfilters.dm.FilterGroup(
- group,
- $.extend( true, {}, groupData, { view: viewName } )
- );
+ if ( !model.groups[ group ] ) {
+ model.groups[ group ] = new mw.rcfilters.dm.FilterGroup(
+ group,
+ $.extend( true, {}, groupData, { view: viewName } )
+ );
+ }
model.groups[ group ].initializeFilters( groupData.filters, groupData.default );
items = items.concat( model.groups[ group ].getItems() );
groupModel.getItems().forEach( function ( filterItem ) {
model.parameterMap[ filterItem.getParamName() ] = filterItem;
} );
- } else if ( groupModel.getType() === 'string_options' ) {
+ } else if (
+ groupModel.getType() === 'string_options' ||
+ groupModel.getType() === 'single_option'
+ ) {
// Group
model.parameterMap[ groupModel.getName() ] = groupModel;
}
/**
* Get the label for the current view
*
+ * @param {string} viewName View name
* @return {string} Label for the current view
*/
- mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentViewLabel = function () {
- return this.views[ this.getCurrentView() ].title;
+ mw.rcfilters.dm.FiltersViewModel.prototype.getViewTitle = function ( viewName ) {
+ viewName = viewName || this.getCurrentView();
+
+ return this.views[ viewName ] && this.views[ viewName ].title;
};
/**